home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / 386_util.arc / EMSTEST.DOC < prev    next >
Text File  |  1990-04-06  |  33KB  |  648 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  EMS 4.0 Driver Test Program
  8.  Preliminary release Version 1.02
  9.  
  10.  
  11.  Written by Douglas Boling
  12.  Copyright (c)1988 - Ziff Davis Publishing Co.
  13.  
  14.  
  15.  
  16.  
  17.       Description
  18.  
  19.         The LIM EMS 4.0 Driver test program is designed to test the correct
  20.         implimentation of the EMS 4.0 spec from the aspect of the documented
  21.         software interface. Each of the functions of the EMS driver is called
  22.         and the results of the function are verified with the expected result.
  23.         When the test program detects an error, the tests for the function
  24.         function currently being tested is stopped, and an error message is
  25.         printed. Codes are printed with the error message to assist in the
  26.         localization of the error.
  27.  
  28.         The tests in this program are based on information in the 'Lotus/
  29.         Intel/Microsoft Expanded memory Specification version 4.0' dated
  30.         October 1987.
  31.  
  32.         The error code is a 4 digit code that indicates the reason for
  33.         the error message. The first two digits indicate the test routine
  34.         currently being executed. The number matches the function being
  35.         tested. For example, error code 1704 is an error in testing
  36.         function 17. Some error codes do not coorspond to a specific
  37.         functional test. Codes can also be the result of errors in the
  38.         setup and initialization routines.
  39.  
  40.         When an error is detected in routines vitial to the continued
  41.         testing of the driver, the test program prints the error message
  42.         and program itself terminates without testing any other part of
  43.         the driver.
  44.  
  45.         Two types of error messages are printed. The first type is printed
  46.         when the EMS driver returns an error though its return code. The
  47.         test program prints a message indicating that an EMS function
  48.         has failed to execute. The return code from the EMS driver is
  49.         included in the error message. It is important to note that
  50.         testing of one function involves the use of other EMS functions.
  51.         It is quite possible that an error will be returned on a function
  52.         not being tested, but rather, a function being used to test some
  53.         other part of the driver.
  54.  
  55.         The second type of error message is printed when the test program
  56.         detects an error due to an unexpected result of a function. For
  57.         example, if the test program mapped an EMS page to the page frame
  58.         but the driver did not map the correct page. In this case an
  59.         error code is printed indicating the reason for the failure.
  60.  
  61.         An index to the error codes is in this document. The codes are
  62.         listed by functional tests. All error codes the test program
  63.         prints should be in this index. Errors that cause the test
  64.         program to terminate completely are indicated be the note
  65.         'Terminal error.' For all other errors the test program will
  66.         stop testing the function that failed. The other functions
  67.         will be tested.
  68.  
  69.  
  70.       Limitations and Exclusions
  71.  
  72.         The EMS 4.0 test program does not test parts of the LIM 4.0
  73.         specification. A list of the untested functions is given
  74.         below.
  75.                 Non volatile handles - Testing for this function
  76.                         requires the rebooting of the computer.
  77.  
  78.                 Function 25 - Get mappable page array - Since
  79.                         the page array varies from machine to
  80.                         machine there is no way to verify the
  81.                         correctness of the information. The
  82.                         function is called, but the data is
  83.                         not interpeted.
  84.  
  85.                 Function 26 - Get hardware information - Since
  86.                         this information varies from driver to
  87.                         driver, there is no way to verify the
  88.                         correctness of the information. The
  89.                         function is called, but the data is
  90.                         not interpeted. Another progarm,
  91.                         EMSINFO.COM is included with this
  92.                         test program. The EMSINFO program
  93.                         prints various information available
  94.                         to software to the screen in an
  95.                         organized manner.
  96.  
  97.                 DMA alternate register sets. - The program does
  98.                         not test this aspect of the LIM 4.0 spec.
  99.  
  100.  
  101.  
  102.  Error Code Reference for EMS 4.0 driver test.
  103.  
  104.         This refrence is composed of a section for each aspect of
  105.         the test program. Each section contains a paragraph describing
  106.         how the function is tested, along with a list of the possible
  107.         error codes. Errors marked 'Termination error' cause the program
  108.         to abort all testing and terminate.
  109.  
  110.  
  111.       Search for EMS driver
  112.          Driver is detected by the two recommended methods of detection,
  113.          the 'Get interrupt technique' and the 'Open handle technique.'
  114.          If the driver is not found by both methods, the test is terminated.
  115.          Possible error codes:
  116.           9900 : Driver could not be found by Get interrupt technique.
  117.                 (Termination error)
  118.           9901 : Driver could not be found by Open handle technique.
  119.                 (Termination error)
  120.  
  121.  
  122.       Function  01          ;Get status
  123.          Function 1 is tested to assure a returned status of 0.
  124.          Possible error codes:
  125.           0000 : Return code not zero. (Termination error)
  126.  
  127.  
  128.       Function  02          ;Get page frame segment address
  129.         Function 2 is called to get the page frame address. The validity
  130.         of the page frame is not tested, however, the remainder
  131.         of the EMS tests depend on this address and will fail
  132.         if the page frame returned is not accurate.
  133.         Possible error codes:
  134.                   0003 : Return code not zero. (Termination error)
  135.  
  136.  
  137.       Function  03          ;Get unallocated page count
  138.         Function 3 is called to get determine the number of unallocated
  139.         pages in the system. The number of pages are checked
  140.         to assure that there are enough free pages to complete
  141.         the tests.
  142.         Possible error codes:
  143.         0004 : Return code not zero. (Termination error)
  144.         0005 : Not enough free pages to complete test (Termination
  145.                  error.)
  146.  
  147.  
  148.       Function  04          ;Allocate pages
  149.         Function 4 is called to allocate handles and pages for the test.
  150.         Any error detected during the allocation of pages
  151.         terminates the test.
  152.         Possible error codes:
  153.          0010 : Return code not zero during first handle allocation.
  154.                   (Termination error)
  155.          0013 : Return code not zero during handle 2 - 9 allocation.
  156.                   (Termination error)
  157.  
  158.  
  159.       Function  05          ;Map/unmap handle pages
  160.         Function 5 is called to initially map the pages so they can be
  161.         initialized. If an error occurs during this part of the
  162.         test the test terminates.
  163.         The function is tested for by mapping pages to physical
  164.         pages in the page frame and comparing the data to the
  165.         initialized data for the specific handle and logical
  166.         page.
  167.         Possible error codes:
  168.          0011 : Return code not zero during map of first handle
  169.                  pages. (Termination error)
  170.          0013 : Return code not zero during map of handles 2 - 9
  171.                  pages. (Termination error)
  172.          0500 : Data in physical page 0 does not match expected data
  173.          0501 : Data in physical page 1 does not match expected data
  174.          0502 : Data in physical page 2 does not match expected data
  175.          0503 : Data in physical page 3 does not match expected data
  176.  
  177.  
  178.       Function  06          ;Deallocate pages
  179.  
  180.  
  181.  
  182.       Function  07          ;Get version
  183.         Function 7 is tested to confirm version 4.0 or greater.
  184.         Possible error codes:
  185.          0001 : Return code not zero. (Termination error)
  186.          0002 : EMM version less than 4.0. (Termination error)
  187.  
  188.  
  189.       Function  08          ;Save page map
  190.         Function 8 and 9 are tested in the same routine. Refer to function
  191.         9 for error codes.
  192.  
  193.  
  194.       Function  09          ;Restore page map
  195.         Functions 8 and 9 are tested in the same routine. The page frame
  196.         is initialized. Function 8 is called to save the mapping context.
  197.         Different pages are mapped into the page frame. Function 9 is called
  198.         to restore the original context. The pages are read to confirm the
  199.         restoration.
  200.         Possible error codes:
  201.          0800 : Function 8 return code not zero.
  202.          0801 : Function 9 return code not zero.
  203.          0802 : Restored physical page 0 does not match expected data
  204.          0803 : Restored physical page 1 does not match expected data
  205.          0804 : Restored physical page 2 does not match expected data
  206.          0805 : Restored physical page 3 does not match expected data
  207.  
  208.  
  209.       Function  10          ;reserved
  210.         Function 10 is not tested.
  211.  
  212.  
  213.       Function  11          ;reserved
  214.         Function 11 is not tested.
  215.  
  216.  
  217.       Function  12          ;Get handle count
  218.         Function 12 is called to get determine the number of unallocated
  219.         handles in the system. The number of handles are checked
  220.         to assure that there are enough free handles to complete
  221.         the tests.
  222.         The function is tested after the handles for the test
  223.         have been allocated. The returned value is compared to
  224.         the original value plus the number of handles requested
  225.          by the test program.
  226.         Possible error codes:
  227.          0005 : Return code not zero. (Termination error)
  228.          0006 : Not enough free handles to complete test (Termination
  229.                   error.)
  230.         1200 : Return code not zero on test.
  231.         1201 : The handle count did not match expected number.
  232.  
  233.  
  234.       Function  13          ;Get handle pages
  235.         Function 13 is called to get the number of pages allocated to
  236.         handle index 1 and handle index 2. The number of pages is compared
  237.         to what is expected. (handle index 0 should have 8 pages allocated,
  238.         handle index 1 should have 1 page allocated.
  239.         Possible error codes:
  240.          1300 : Function 13 return code not zero on call for
  241.                   handle index 0.
  242.          1301 : Number of pages returned does not match expected
  243.                   number of pages for handle index 0.
  244.          1302 : Function 13 return code not zero on call for
  245.                   handle index 1.
  246.          1303 : Number of pages returned does not match expected
  247.                   number of pages for handle index 1.
  248.  
  249.  
  250.       Function  14          ;Get all handle pages
  251.         Function 14 is called the handle page array. The total number
  252.         of open handles is compared to a maximum of 64. The 64 handle
  253.         limit is due to the space allocated to the data area for the
  254.         function 14 test. The total handles returned is compared to
  255.         the expected number. The array is then searched for the handles
  256.         allocated by the test. Each handle is searched for in the array,
  257.         and the resulting page allocation is compared to what is expected.
  258.         Possible error codes:
  259.          1400 : Function 14 return code not zero.
  260.          1401 : Number of open handles does not match expected.
  261.          1402 : Handle index 0 page allocation does not match
  262.                   expected value.
  263.          1403 : Handle index 1 - 8 page allocations do not match
  264.                   expected values.
  265.  
  266.  
  267.       Function  15          ;Page map functions
  268.         Function 15.3 is called to get the size of the save area needed.
  269.         If the size is larger than 128 bytes the test is ended. The page
  270.         frame is initialized by mapping pages to physical pages 0 through
  271.         3. Function 15.0 Get page map is called. The page frame context
  272.         is changed by mapping different pages into the frame. The new
  273.         context is saved using a different save area. The page map is
  274.         restored using function 15.1. The page frame data is checked to
  275.         see if it matches the original context. Function 15.2, Get and
  276.         Set page map is called. The page frame context is then tested
  277.         for the restoration of the second mapping context. Function 15.1
  278.         Set page map is called again using the saved context from the
  279.         Get and Set function. The page map is checked to see if the
  280.         original context is restored.
  281.         Possible error codes:
  282.          1500 : Function 15.3 return code not zero.
  283.          1501 : Size of save array larger than 128 bytes.
  284.          1502 : Function 15.0 return code not zero on first call.
  285.          1503 : Function 15.0 return code not zero on second call.
  286.          1504 : Function 15.1 return code not zero on first call.
  287.          1505 : Set page 0 does not match expected data
  288.          1506 : Set page 1 does not match expected data
  289.          1507 : Set page 2 does not match expected data
  290.          1508 : Set page 3 does not match expected data
  291.          1509 : Function 15.2 return code not zero.
  292.          1510 : Get and Set page 0 does not match expected data
  293.          1511 : Get and Set page 1 does not match expected data
  294.          1512 : Get and Set page 2 does not match expected data
  295.          1513 : Get and Set page 3 does not match expected data
  296.          1514 : Function 15.1 return code not zero on second call.
  297.          1515 : Set page 0 does not match expected data
  298.          1516 : Set page 1 does not match expected data
  299.          1517 : Set page 2 does not match expected data
  300.          1518 : Set page 3 does not match expected data
  301.  
  302.  
  303.       Function  16          ;Partial page map functions
  304.         Function 16.2 is called to get the size of the save area needed.
  305.         If the size is larger than 128 bytes the test is ended. The page
  306.         frame is initialized by mapping pages to physical pages 0 through
  307.         3. The mapping structure is initialized using page frame segment.
  308.         Function 16.0 Get partial page map is called to save mapping of
  309.         physical pages 0 and 2. The page frame context is changed
  310.         by mapping different pages into the frame. The original context
  311.         is restored for pages 0 and 2 using function 16.1. The resulting
  312.         context is checked to see if the result is a combination of the
  313.         original context and of the modified context.
  314.         Possible error codes:
  315.          1600 : Function 16.2 return code not zero.
  316.          1601 : Size of save array larger than 128 bytes.
  317.          1602 : Function 16.0 return code not zero.
  318.          1603 : Function 16.1 return code not zero.
  319.          1604 : Restored page 0 does not match expected data
  320.          1605 : Unchanged page 1 does not match expected data
  321.          1606 : Restored page 2 does not match expected data
  322.          1607 : Unchanged page 3 does not match expected data
  323.  
  324.  
  325.       Function  17          ;Map/unmap multiple handle pages
  326.         Function 17.0 is called to map the full four pages of the page
  327.         frame. The mapping is checked to confirm it matches what is in
  328.         the mapping structure. Segment addresses for the page frame
  329.         physical pages are written into a second mapping structure.
  330.         Function 16.1 is called to map the new pages into the page frame.
  331.         The mapping is checked to see if it matches what is in the
  332.         second mapping structure.
  333.         Possible error codes:
  334.          1700 : Function 17.0 return code not zero.
  335.          1701 : Mapped page 0 does not match expected data
  336.          1702 : Mapped page 1 does not match expected data
  337.          1703 : Mapped page 2 does not match expected data
  338.          1704 : Mapped page 3 does not match expected data
  339.          1705 : Function 17.1 return code not zero.
  340.          1706 : Mapped page 0 does not match expected data
  341.          1707 : Mapped page 1 does not match expected data
  342.          1708 : Mapped page 2 does not match expected data
  343.          1709 : Mapped page 3 does not match expected data
  344.  
  345.  
  346.       Function  18          ;Reallocate pages
  347.         Function 18 is called to increase handle index 0 allocated
  348.         pages from 8 to 10. The pages are initialized, then mapped
  349.         to the page frame. The data for these new pages is checked.
  350.         Function 13 is called to confirm that handle index 0 has
  351.         10 pages allocated. Function 18 is called again to reduce
  352.         the allocated pages for handle index 0 back to 8. An attempt
  353.         to map pages 9 and 10 is made to confirm that the pages no
  354.         longer exist.
  355.         Possible error codes:
  356.          1800 : Function 18 return code not zero on first call.
  357.          1801 : New logical page 9 cannot be mapped and initialized.
  358.          1802 : New logical page 10 cannot be mapped and initialized.
  359.          1803 : New logical page 9 cannot be mapped to be read.
  360.          1804 : New logical page 10 cannot be mapped to be read.
  361.          1805 : Logical page 9 does not match expected data.
  362.          1806 : Logical page 10 does not match expected data.
  363.          1807 : Function 13 return code not zero.
  364.          1808 : Number of pages for handle index 0 not correct.
  365.          1809 : Function 18 return code not zero on second call.
  366.          1810 : Accessing illegal page 9 does not cause illegal
  367.                   page error.
  368.  
  369.  
  370.       Function  19          ;Handle attribute
  371.         Function 19.2 is called to see if nonvolatile handles are
  372.         supported.
  373.         if nonvolatile handles are not supported, function 19.0 get
  374.         handle attribute is called to confirm that the function call
  375.         causes a nonsupported return code. Function 19.1 is called
  376.         to confirm that the function call returns a nonsupported
  377.         return code.
  378.         If nonvolatile handles are supported, function 19.0 get
  379.         handle attribute is called. The returned attribute is tested
  380.         to to see if valid type. Function 19.1 is called to set the
  381.         attribute to volatile. Function 19.0 is called to confirm that
  382.         the handle attribute is now volatile. Function 19.1 is called to
  383.         set the attribute to nonvolatile. Function 19.0 is called to
  384.         confirm that the attribute is now nonvolatile. Function 19.1
  385.         is called with the illegal attribute value of 2 to confirm
  386.         the return of an illegal attribute return code.
  387.         Regardless of if volatile handles are supported or not, a message
  388.         is printed to the screen indicating the driver support for this
  389.         function.
  390.         The test does not confirm that nonvolatile handles actually
  391.         are nonvolatile.
  392.         Possible error codes:
  393.          1900 : Function 19.2 return code not zero.
  394.          1901 : No unsupported return code for unsupported
  395.                   function 19.0.
  396.          1902 : No unsupported return code for unsupported
  397.                   function 19.1.
  398.          1903 : Function 19.0 return code not zero on first call.
  399.          1904 : Illegal value for attribute for supported function.
  400.          1905 : Function 19.1 return code not zero on first call.
  401.          1906 : Function 19.0 return code not zero on second call.
  402.          1907 : Supported attribute could not be set to 0.
  403.          1908 : Function 19.1 return code not zero on second call.
  404.          1909 : Function 19.0 return code not zero on third call.
  405.          1910 : Supported attribute could not be set to 1.
  406.          1911 : Illegal attribute return code not returned for
  407.                   an attempted set to an illegal attribute.
  408.  
  409.  
  410.       Function  20          ;Handle name
  411.         Function 20.0 is called to see if a non-null handle name
  412.         is set for a handle that has not has a name assigned. Function
  413.         20.1 is called to assign a handle name. Function 20.0 is called
  414.         to confirm the handle name just set. Function 6 is called to
  415.         deallocate named handle. Function 4 is called to reallocate
  416.         a handle to replace the handle. The new handle page is reinitialized.
  417.         Function 20.0 is called to confirm that the new handle does not
  418.         have a name assigned.
  419.         Possible error codes:
  420.          2000 : Function 20.0 return code not zero for first call.
  421.          2001 : A non-null name is assigned to a new handle.
  422.          2002 : Function 20.1 return code not zero for first call.
  423.          2003 : Function 20.0 return code not zero for second call.
  424.          2004 : Retrieved handle name does not match set handle name.
  425.          2005 : Function 6 return code not zero.
  426.          2006 : Function 4 return code not zero.
  427.          2007 : Initialization of new handle page failed.
  428.          2008 : Function 20.0 return code not zero on third call.
  429.          2009 : Non_null name assigned to new handle.
  430.  
  431.  
  432.       Function  21          ;Handle directory
  433.         Function 21.2 is called to get the total number of handles
  434.         supported by the driver. This number is checked to see if
  435.         a minimum of 64 and a maximum of 255 handles are supported. Handle
  436.         names for 2 handles are set using function 20.1. Function 21.0
  437.         is called to get the handle directory. The returned directory is
  438.         scanned to check for the two handle names just assigned. Function
  439.         21.1 is called to search for the handle name of one of the handles
  440.         just assigned a name. Function 21.1 is called again to search for
  441.         a handle not in the directory. Function 21.1 is called for a third
  442.         time to search for a handle with a null name.
  443.         Possible error codes:
  444.          2100 : Function 21.2 return code not zero.
  445.          2101 : Less than 64 handles supported by driver
  446.          2102 : More than 255 handles supported by driver.
  447.          2103 : Number of open handles is not what is expected.
  448.          2104 : Function 20.1 return code not zero for first call.
  449.          2105 : Function 20.1 return code not zero for second call.
  450.          2106 : Function 21.0 return code not zero.
  451.          2107 : Active handle not found in handle directory.
  452.          2108 : Handle name not correct for handle in directory.
  453.          2109 : Function 21.1 return code not zero for first call.
  454.          2110 : Search for handle name function returned wrong handle.
  455.          2111 : Return code not 'not found' for search of a nonexistent
  456.                   handle name.
  457.          2112 : Return code not 'Null handle name' for search of a
  458.                   null handle name.
  459.  
  460.  
  461.       Function  22          ;Alter page map and jump
  462.         The page frame is initialized. The function 22 data structure
  463.         is initialized. The state of the stack pointer and the flags register
  464.         is saved.  Function 22.0, Alter page map and jump is called.
  465.         The state of the stack pointer and the flags register is compared
  466.         to their states before the jump. The state of the page frame is
  467.         compared to the expected mapping configuration.
  468.         Possible error codes:
  469.          2200 : Function 22.0 jump not taken.
  470.          2201 : Function 22.0 return code not zero.
  471.          2202 : Stack pointer corrupted across jump
  472.          2203 : Flags register corrupted across jump
  473.          2304 : Mapped page 0 does not match expected data
  474.          2305 : Mapped page 1 does not match expected data
  475.          2306 : Mapped page 2 does not match expected data
  476.          2307 : Mapped page 3 does not match expected data
  477.  
  478.  
  479.       Function  23          ;Alter page map and call
  480.         The page frame is initialized. The function 23 data structure
  481.         is initialized. The state of the stack pointer and the flags register
  482.         is saved.  Function 23.0, Alter page map and call is called.
  483.         In the called routine, a flag is set to indicate the routine
  484.         has been called. The state of the page frame is checked.
  485.         The state of the the flags register is saved. The called
  486.         routine calls the EMS driver for the version number and returns
  487.         using a far return. On return to the calling procedure,
  488.         the state of the stack pointer is compared to its state before
  489.         the call. The save states of the flags register are comared. The
  490.         state of the page frame is compared to the expected mapping
  491.         configuration.
  492.         Possible error codes:
  493.          2300 : Mapped page 0 does not match expected data for subroutine.
  494.          2301 : Mapped page 1 does not match expected data for subroutine.
  495.          2302 : Mapped page 2 does not match expected data for subroutine.
  496.          2303 : Mapped page 3 does not match expected data for subroutine.
  497.          2304 : Function 7 Get version failed when called from subroutine.
  498.          2305 : Function 23.0 return code not zero.
  499.          2306 : Subroutine not called by EMS driver.
  500.          2307 : Stack pointer corrupted across call
  501.          2308 : Flags register corrupted across call
  502.          2309 : Original page 0 not restored on return from subroutine.
  503.          2310 : Original page 1 not restored on return from subroutine.
  504.          2311 : Original page 2 not restored on return from subroutine.
  505.          2312 : Original page 3 not restored on return from subroutine.
  506.  
  507.  
  508.       Function  24          ;move/exchange memory region
  509.         The page frame is initialized. The function 24 data structure
  510.         is initialized. Function 24.0 Move memory is called. The move
  511.         is from expanded memory to conventional memory. The data
  512.         read from the expanded memory is compared to twhat is expected.
  513.         The page frame is checked to verify that the mapping context
  514.         did not change during the move.
  515.         Possible error codes:
  516.          2400 : Function 24.0 return code not zero.
  517.          2401 : First half of data moved from Expanded memory not accurate.
  518.          2402 : Second half of data moved from Expanded memory not accurate.
  519.          2403 : Original page 0 corrupted by move.
  520.          2404 : Original page 1 corrupted by move.
  521.          2405 : Original page 2 corrupted by move.
  522.          2406 : Original page 3 corrupted by move.
  523.  
  524.  
  525.       Function  25          ;Get mappable physical addr array
  526.         Function 25.1 is called to get the size of the physical address
  527.         page array. If the array is larger than 128 bytes the test is
  528.         terminated. Functoin 25.0 is called to copy the page array into
  529.         a data buffer. The number of entries retruned by functon 25.0
  530.         is compared to the number returned in 25.1.
  531.         Possible error codes:
  532.          2500 : Function 25.1 return code not zero.
  533.          2501 : Data from the physical page map will not fit in the
  534.                 test program buffer.
  535.          2502 : Function 25.0 return code not zero.
  536.          2502 : The number of pages returned by 25.1 is different than
  537.                 the number returned by 25.0.
  538.  
  539.  
  540.       Function  26          ;Hardware configuration
  541.         Function 26.0 is called to get the hardware configuration
  542.         information. Function 26.1 is called to get the raw page
  543.         count. The data is formatted so it can be printed, but the
  544.         test progam print statement is disabled.
  545.         Possible error codes:
  546.          2600 : Function 26.0 return code not zero.
  547.          2601 : Function 26.1 return code not zero.
  548.  
  549.  
  550.       Function  27          ;Allocate standard pages
  551.         Function 27.0 allocate standard pages with a requested
  552.         page count of zero. Function 13 is called to confirm that
  553.         no pages are allocated to the new handle. Function 6 is
  554.         called to deallocate the new handle. Function 27.1 is
  555.         called to allocate a handle with one raw page. Function 5
  556.         is called to map the page to the page frame. Function 6
  557.         is called to deallocate the page.
  558.         Possible error codes:
  559.          2700 : Function 27.0 return code not zero.
  560.          2701 : Function 13.0 return code not zero.
  561.          2702 : Handle count returned not equal to zero.
  562.          2703 : Function 6 return code not zero.
  563.          2704 : Function 27.1 return code not zero.
  564.          2705 : Map of raw page failed, Function 5 return code not zero.
  565.          2706 : Map of page to replace raw page failed, Function 5 return
  566.                         code not zero.
  567.          2707 : Deallocate of raw page failed, Function 6 return code not zero.
  568.  
  569.  
  570.       Function  28          ;Alternate map register set
  571.         The page frame is initialized. Function 28.2 is called to
  572.         get the size of the save array. If the array is too large the
  573.         test is terminated. Function 28.3 is called to allocate an
  574.         alternate register set. If hardware register sets are not
  575.         supported, the software emulation functon is tested. The
  576.         page map is changed. Function 28.0 is called to get the
  577.         current register set. Function 28.1 is called to invoke the
  578.         alternate register set reserved earlier. The page map
  579.         is checked. Functoin 28.1 is called to restore th orginal
  580.         map register set. Function 28.4 is called to deallocate the
  581.         alternate register set. The page frame is checked.
  582.         For simulated register sets, Function 15.0 is called to
  583.         initialize the save area. The page map is changed. Function
  584.         28.1 is called to restore the page map. The page map is
  585.         checked. The page map is modified. Function 28.0 is called
  586.         to save the page map. The page map is modified. Function 28.1
  587.         is called to restore the page map. The page map is checked.
  588.         Possible error codes:
  589.          2800 : Function 28.2 return code not zero.
  590.          2801 : Save array size too large.
  591.          2802 : Function 28.3 return code not zero.
  592.          2803 : Function 28.0 return code not zero.
  593.          2804 : Function 28.1 return code not zero.
  594.          2805 : Original page 0 not restored by alt register map.
  595.          2806 : Original page 1 not restored by alt register map.
  596.          2807 : Original page 2 not restored by alt register map.
  597.          2808 : Original page 3 not restored by alt register map.
  598.          2809 : Restore of original reg set fail, Function 28.1
  599.                         return code not zero.
  600.          2810 : Function 28.4 return code not zero.
  601.          2811 : Page 0 not restored by orginal register map.
  602.          2812 : Page 1 not restored by orginal register map.
  603.          2813 : Page 2 not restored by orginal register map.
  604.          2814 : Page 3 not restored by orginal register map.
  605.          2819 : Function 15.0 return code not zero.
  606.          2820 : Function 28.1 return code not zero.
  607.          2821 : Original page 0 not restored by alt register map.
  608.          2822 : Original page 1 not restored by alt register map.
  609.          2823 : Original page 2 not restored by alt register map.
  610.          2824 : Original page 3 not restored by alt register map.
  611.          2825 : Function 28.0 return code not zero.
  612.          2826 : Function 28.1 return code not zero.
  613.          2827 : Page 0 not restored by orginal register map.
  614.          2828 : Page 1 not restored by orginal register map.
  615.          2829 : Page 2 not restored by orginal register map.
  616.          2830 : Page 3 not restored by orginal register map.
  617.  
  618.  
  619.       Function  29          ;Warmboot preparation
  620.         Function 29 is not tested.
  621.  
  622.  
  623.       Function  30          ;OS/E functions
  624.         Function 30.0 is called to get the OS/E password. Function
  625.         30.0 is called again with a bad password. Function 30.1 is
  626.         called to disable the OS/E function set. Function 26.2 is
  627.         called to see if a disabled function can be accessed.
  628.         Function 30.0 is called to enable the OS/E function set.
  629.         Function 26.2 is called to access an OS/E function. Function
  630.         30.2 is called with a bad password to return the password.
  631.         Function 30.2 is called again with the correct password.
  632.         Possible error codes:
  633.          3000 : Function 30.0 return code not zero.
  634.          3001 : Bad password return code not returned when Function 30.0
  635.                         called with a bad password.
  636.          3002 : Function 30.1 return code not zero.
  637.          3003 : Function 26.2 did not return access denied return code
  638.                         when disabled.
  639.          3004 : Function 30.0 return code not zero.
  640.          3005 : Function 26.2 return code not zero.
  641.          3006 : Function 30.2 did not return bad password return code.
  642.          3007 : Function 30.2 return code not zero.
  643.  
  644.  
  645.  
  646.  
  647.  
  648.